Skip to content

MkClassDiagram

Show source on GitHub

Node to display the class hierarchy of a class. Supports multiple modes.

Example: Baseclass diagram

Jinja

{{ _mk.MkClassDiagram | MkClassDiagram(mode="baseclasses") }}

Python

MkClassDiagram(klass=MkClassDiagram, mode='baseclasses', direction='TD')
graph TD
  94596170373360["mkclassdiagram.MkClassDiagram"]
  94596169875232["mkdiagram.MkDiagram"]
  94596170179664["mkcode.MkCode"]
  94596169139824["mkcontainer.MkContainer"]
  94596169136704["mknode.MkNode"]
  94596171773984["node.Node"]
  139930746687680["builtins.object"]
  94596169875232 --> 94596170373360
  94596170179664 --> 94596169875232
  94596169139824 --> 94596170179664
  94596169136704 --> 94596169139824
  94596171773984 --> 94596169136704
  139930746687680 --> 94596171773984
```` mermaid
graph TD
  94596170373360["mkclassdiagram.MkClassDiagram"]
  94596169875232["mkdiagram.MkDiagram"]
  94596170179664["mkcode.MkCode"]
  94596169139824["mkcontainer.MkContainer"]
  94596169136704["mknode.MkNode"]
  94596171773984["node.Node"]
  139930746687680["builtins.object"]
  94596169875232 --> 94596170373360
  94596170179664 --> 94596169875232
  94596169139824 --> 94596170179664
  94596169136704 --> 94596169139824
  94596171773984 --> 94596169136704
  139930746687680 --> 94596171773984
````
<pre class="mermaid"><code>graph TD
  94596170373360["mkclassdiagram.MkClassDiagram"]
  94596169875232["mkdiagram.MkDiagram"]
  94596170179664["mkcode.MkCode"]
  94596169139824["mkcontainer.MkContainer"]
  94596169136704["mknode.MkNode"]
  94596171773984["node.Node"]
  139930746687680["builtins.object"]
  94596169875232 --&gt; 94596170373360
  94596170179664 --&gt; 94596169875232
  94596169139824 --&gt; 94596170179664
  94596169136704 --&gt; 94596169139824
  94596171773984 --&gt; 94596169136704
  139930746687680 --&gt; 94596171773984</code></pre>

Example: Subclass diagram

Jinja

{{ _mk.MkContainer | MkClassDiagram(mode="subclasses", direction="LR") }}

Python

MkClassDiagram(klass=MkContainer, mode='subclasses', direction='LR')
graph LR
  94596169139824["mkcontainer.MkContainer"]
  94596169140816["mkblock.MkBlock"]
  94596173129984["mkhtmlblock.MkHtmlBlock"]
  94596170171008["mkdetailsblock.MkDetailsBlock"]
  94596169147680["mktabs.MkTabBlock"]
  94596170172000["mkadmonition.MkAdmonition"]
  94596170172992["mkblockquote.MkBlockQuote"]
  94596170179664["mkcode.MkCode"]
  94596169875232["mkdiagram.MkDiagram"]
  94596170373360["mkclassdiagram.MkClassDiagram"]
  94596169100704["mkpipdeptree.MkPipDepTree"]
  94596168153008["mktreeview.MkTreeView"]
  94596168228624["mktemplate.MkTemplate"]
  94596168230672["mkclidoc.MkCliDoc"]
  94596168232448["mkmaterialbadge.MkMaterialBadge"]
  94596169866464["mkimagecompare.MkImageCompare"]
  94596169868240["mkimageslideshow.MkImageSlideshow"]
  94596167927680["mkiframe.MkIFrame"]
  94596173143840["mkcard.MkCard"]
  94596172880352["mkinstallguide.MkInstallGuide"]
  94596168179664["mkcodeofconduct.MkCodeOfConduct"]
  94596168181440["mkcommitconventions.MkCommitConventions"]
  94596169003120["mkpullrequestguidelines.MkPullRequestGuidelines"]
  94596169004896["mkdevenvsetup.MkDevEnvSetup"]
  94596169006672["mkdevtools.MkDevTools"]
  94596169112432["mkreprrawrendered.MkReprRawRendered"]
  94596170071968["mkcommandoutput.MkCommandOutput"]
  94596170077744["mkcommentedcode.MkCommentedCode"]
  94596170078736["mkconfigsetting.MkConfigSetting"]
  94596170305008["mkpluginflow.MkPluginFlow"]
  94596169145520["mklist.MkList"]
  94596169877792["mkbasetable.MkBaseTable"]
  94596167947440["mktable.MkTable"]
  94596167948432["mkhtmltable.MkHtmlTable"]
  94596167818336["mktabs.MkTab"]
  94596167820112["mktabcontainer.MkTabContainer"]
  94596167811264["mktabbedblocks.MkTabbedBlocks"]
  94596167813040["mktabbed.MkTabbed"]
  94596167814816["mkcritic.MkCritic"]
  94596172077952["mkannotations.MkAnnotation"]
  94596172078944["mkannotations.MkAnnotations"]
  94596172103392["mkfootnotes.MkFootNote"]
  94596172080720["mkfootnotes.MkFootNotes"]
  94596169835056["mkdefinitionlist.MkDefinition"]
  94596167931232["mkdefinitionlist.MkDefinitionList"]
  94596168301424["mkpage.MkPage"]
  94596172878736["mktemplatepage.MkTemplatePage"]
  94596169840976["mkclasspage.MkClassPage"]
  94596169845568["mkmodulepage.MkModulePage"]
  94596168453312["mkshowcase.MkShowcase"]
  94596168458416["mkspeechbubble.MkSpeechBubble"]
  94596168455088["mktasklist.MkTask"]
  94596167832096["mktasklist.MkTaskList"]
  94596168413584["mktimeline.MkTimeline"]
  94596169953056["mkshields.MkShields"]
  94596168404656["mkmetadatabadges.MkMetadataBadges"]
  94596169139824 --> 94596169140816
  94596169140816 --> 94596173129984
  94596169140816 --> 94596170171008
  94596169140816 --> 94596169147680
  94596169139824 --> 94596170172000
  94596169139824 --> 94596170172992
  94596169139824 --> 94596170179664
  94596170179664 --> 94596169875232
  94596169875232 --> 94596170373360
  94596169875232 --> 94596169100704
  94596170179664 --> 94596168153008
  94596169139824 --> 94596168228624
  94596168228624 --> 94596168230672
  94596168228624 --> 94596168232448
  94596168228624 --> 94596169866464
  94596168228624 --> 94596169868240
  94596168228624 --> 94596167927680
  94596168228624 --> 94596173143840
  94596168228624 --> 94596172880352
  94596168228624 --> 94596168179664
  94596168228624 --> 94596168181440
  94596168228624 --> 94596169003120
  94596168228624 --> 94596169004896
  94596168228624 --> 94596169006672
  94596168228624 --> 94596169112432
  94596168228624 --> 94596170071968
  94596168228624 --> 94596170077744
  94596168228624 --> 94596170078736
  94596168228624 --> 94596170305008
  94596169139824 --> 94596169145520
  94596169139824 --> 94596169877792
  94596169877792 --> 94596167947440
  94596169877792 --> 94596167948432
  94596169139824 --> 94596167818336
  94596169139824 --> 94596167820112
  94596167820112 --> 94596167811264
  94596167820112 --> 94596167813040
  94596169139824 --> 94596167814816
  94596169139824 --> 94596172077952
  94596169139824 --> 94596172078944
  94596169139824 --> 94596172103392
  94596169139824 --> 94596172080720
  94596169139824 --> 94596169835056
  94596169139824 --> 94596167931232
  94596169139824 --> 94596168301424
  94596168301424 --> 94596172878736
  94596172878736 --> 94596169840976
  94596172878736 --> 94596169845568
  94596169139824 --> 94596168453312
  94596169139824 --> 94596168458416
  94596169139824 --> 94596168455088
  94596169139824 --> 94596167832096
  94596169139824 --> 94596168413584
  94596169139824 --> 94596169953056
  94596169139824 --> 94596168404656
```` mermaid
graph LR
  94596169139824["mkcontainer.MkContainer"]
  94596169140816["mkblock.MkBlock"]
  94596173129984["mkhtmlblock.MkHtmlBlock"]
  94596170171008["mkdetailsblock.MkDetailsBlock"]
  94596169147680["mktabs.MkTabBlock"]
  94596170172000["mkadmonition.MkAdmonition"]
  94596170172992["mkblockquote.MkBlockQuote"]
  94596170179664["mkcode.MkCode"]
  94596169875232["mkdiagram.MkDiagram"]
  94596170373360["mkclassdiagram.MkClassDiagram"]
  94596169100704["mkpipdeptree.MkPipDepTree"]
  94596168153008["mktreeview.MkTreeView"]
  94596168228624["mktemplate.MkTemplate"]
  94596168230672["mkclidoc.MkCliDoc"]
  94596168232448["mkmaterialbadge.MkMaterialBadge"]
  94596169866464["mkimagecompare.MkImageCompare"]
  94596169868240["mkimageslideshow.MkImageSlideshow"]
  94596167927680["mkiframe.MkIFrame"]
  94596173143840["mkcard.MkCard"]
  94596172880352["mkinstallguide.MkInstallGuide"]
  94596168179664["mkcodeofconduct.MkCodeOfConduct"]
  94596168181440["mkcommitconventions.MkCommitConventions"]
  94596169003120["mkpullrequestguidelines.MkPullRequestGuidelines"]
  94596169004896["mkdevenvsetup.MkDevEnvSetup"]
  94596169006672["mkdevtools.MkDevTools"]
  94596169112432["mkreprrawrendered.MkReprRawRendered"]
  94596170071968["mkcommandoutput.MkCommandOutput"]
  94596170077744["mkcommentedcode.MkCommentedCode"]
  94596170078736["mkconfigsetting.MkConfigSetting"]
  94596170305008["mkpluginflow.MkPluginFlow"]
  94596169145520["mklist.MkList"]
  94596169877792["mkbasetable.MkBaseTable"]
  94596167947440["mktable.MkTable"]
  94596167948432["mkhtmltable.MkHtmlTable"]
  94596167818336["mktabs.MkTab"]
  94596167820112["mktabcontainer.MkTabContainer"]
  94596167811264["mktabbedblocks.MkTabbedBlocks"]
  94596167813040["mktabbed.MkTabbed"]
  94596167814816["mkcritic.MkCritic"]
  94596172077952["mkannotations.MkAnnotation"]
  94596172078944["mkannotations.MkAnnotations"]
  94596172103392["mkfootnotes.MkFootNote"]
  94596172080720["mkfootnotes.MkFootNotes"]
  94596169835056["mkdefinitionlist.MkDefinition"]
  94596167931232["mkdefinitionlist.MkDefinitionList"]
  94596168301424["mkpage.MkPage"]
  94596172878736["mktemplatepage.MkTemplatePage"]
  94596169840976["mkclasspage.MkClassPage"]
  94596169845568["mkmodulepage.MkModulePage"]
  94596168453312["mkshowcase.MkShowcase"]
  94596168458416["mkspeechbubble.MkSpeechBubble"]
  94596168455088["mktasklist.MkTask"]
  94596167832096["mktasklist.MkTaskList"]
  94596168413584["mktimeline.MkTimeline"]
  94596169953056["mkshields.MkShields"]
  94596168404656["mkmetadatabadges.MkMetadataBadges"]
  94596169139824 --> 94596169140816
  94596169140816 --> 94596173129984
  94596169140816 --> 94596170171008
  94596169140816 --> 94596169147680
  94596169139824 --> 94596170172000
  94596169139824 --> 94596170172992
  94596169139824 --> 94596170179664
  94596170179664 --> 94596169875232
  94596169875232 --> 94596170373360
  94596169875232 --> 94596169100704
  94596170179664 --> 94596168153008
  94596169139824 --> 94596168228624
  94596168228624 --> 94596168230672
  94596168228624 --> 94596168232448
  94596168228624 --> 94596169866464
  94596168228624 --> 94596169868240
  94596168228624 --> 94596167927680
  94596168228624 --> 94596173143840
  94596168228624 --> 94596172880352
  94596168228624 --> 94596168179664
  94596168228624 --> 94596168181440
  94596168228624 --> 94596169003120
  94596168228624 --> 94596169004896
  94596168228624 --> 94596169006672
  94596168228624 --> 94596169112432
  94596168228624 --> 94596170071968
  94596168228624 --> 94596170077744
  94596168228624 --> 94596170078736
  94596168228624 --> 94596170305008
  94596169139824 --> 94596169145520
  94596169139824 --> 94596169877792
  94596169877792 --> 94596167947440
  94596169877792 --> 94596167948432
  94596169139824 --> 94596167818336
  94596169139824 --> 94596167820112
  94596167820112 --> 94596167811264
  94596167820112 --> 94596167813040
  94596169139824 --> 94596167814816
  94596169139824 --> 94596172077952
  94596169139824 --> 94596172078944
  94596169139824 --> 94596172103392
  94596169139824 --> 94596172080720
  94596169139824 --> 94596169835056
  94596169139824 --> 94596167931232
  94596169139824 --> 94596168301424
  94596168301424 --> 94596172878736
  94596172878736 --> 94596169840976
  94596172878736 --> 94596169845568
  94596169139824 --> 94596168453312
  94596169139824 --> 94596168458416
  94596169139824 --> 94596168455088
  94596169139824 --> 94596167832096
  94596169139824 --> 94596168413584
  94596169139824 --> 94596169953056
  94596169139824 --> 94596168404656
````
<pre class="mermaid"><code>graph LR
  94596169139824["mkcontainer.MkContainer"]
  94596169140816["mkblock.MkBlock"]
  94596173129984["mkhtmlblock.MkHtmlBlock"]
  94596170171008["mkdetailsblock.MkDetailsBlock"]
  94596169147680["mktabs.MkTabBlock"]
  94596170172000["mkadmonition.MkAdmonition"]
  94596170172992["mkblockquote.MkBlockQuote"]
  94596170179664["mkcode.MkCode"]
  94596169875232["mkdiagram.MkDiagram"]
  94596170373360["mkclassdiagram.MkClassDiagram"]
  94596169100704["mkpipdeptree.MkPipDepTree"]
  94596168153008["mktreeview.MkTreeView"]
  94596168228624["mktemplate.MkTemplate"]
  94596168230672["mkclidoc.MkCliDoc"]
  94596168232448["mkmaterialbadge.MkMaterialBadge"]
  94596169866464["mkimagecompare.MkImageCompare"]
  94596169868240["mkimageslideshow.MkImageSlideshow"]
  94596167927680["mkiframe.MkIFrame"]
  94596173143840["mkcard.MkCard"]
  94596172880352["mkinstallguide.MkInstallGuide"]
  94596168179664["mkcodeofconduct.MkCodeOfConduct"]
  94596168181440["mkcommitconventions.MkCommitConventions"]
  94596169003120["mkpullrequestguidelines.MkPullRequestGuidelines"]
  94596169004896["mkdevenvsetup.MkDevEnvSetup"]
  94596169006672["mkdevtools.MkDevTools"]
  94596169112432["mkreprrawrendered.MkReprRawRendered"]
  94596170071968["mkcommandoutput.MkCommandOutput"]
  94596170077744["mkcommentedcode.MkCommentedCode"]
  94596170078736["mkconfigsetting.MkConfigSetting"]
  94596170305008["mkpluginflow.MkPluginFlow"]
  94596169145520["mklist.MkList"]
  94596169877792["mkbasetable.MkBaseTable"]
  94596167947440["mktable.MkTable"]
  94596167948432["mkhtmltable.MkHtmlTable"]
  94596167818336["mktabs.MkTab"]
  94596167820112["mktabcontainer.MkTabContainer"]
  94596167811264["mktabbedblocks.MkTabbedBlocks"]
  94596167813040["mktabbed.MkTabbed"]
  94596167814816["mkcritic.MkCritic"]
  94596172077952["mkannotations.MkAnnotation"]
  94596172078944["mkannotations.MkAnnotations"]
  94596172103392["mkfootnotes.MkFootNote"]
  94596172080720["mkfootnotes.MkFootNotes"]
  94596169835056["mkdefinitionlist.MkDefinition"]
  94596167931232["mkdefinitionlist.MkDefinitionList"]
  94596168301424["mkpage.MkPage"]
  94596172878736["mktemplatepage.MkTemplatePage"]
  94596169840976["mkclasspage.MkClassPage"]
  94596169845568["mkmodulepage.MkModulePage"]
  94596168453312["mkshowcase.MkShowcase"]
  94596168458416["mkspeechbubble.MkSpeechBubble"]
  94596168455088["mktasklist.MkTask"]
  94596167832096["mktasklist.MkTaskList"]
  94596168413584["mktimeline.MkTimeline"]
  94596169953056["mkshields.MkShields"]
  94596168404656["mkmetadatabadges.MkMetadataBadges"]
  94596169139824 --&gt; 94596169140816
  94596169140816 --&gt; 94596173129984
  94596169140816 --&gt; 94596170171008
  94596169140816 --&gt; 94596169147680
  94596169139824 --&gt; 94596170172000
  94596169139824 --&gt; 94596170172992
  94596169139824 --&gt; 94596170179664
  94596170179664 --&gt; 94596169875232
  94596169875232 --&gt; 94596170373360
  94596169875232 --&gt; 94596169100704
  94596170179664 --&gt; 94596168153008
  94596169139824 --&gt; 94596168228624
  94596168228624 --&gt; 94596168230672
  94596168228624 --&gt; 94596168232448
  94596168228624 --&gt; 94596169866464
  94596168228624 --&gt; 94596169868240
  94596168228624 --&gt; 94596167927680
  94596168228624 --&gt; 94596173143840
  94596168228624 --&gt; 94596172880352
  94596168228624 --&gt; 94596168179664
  94596168228624 --&gt; 94596168181440
  94596168228624 --&gt; 94596169003120
  94596168228624 --&gt; 94596169004896
  94596168228624 --&gt; 94596169006672
  94596168228624 --&gt; 94596169112432
  94596168228624 --&gt; 94596170071968
  94596168228624 --&gt; 94596170077744
  94596168228624 --&gt; 94596170078736
  94596168228624 --&gt; 94596170305008
  94596169139824 --&gt; 94596169145520
  94596169139824 --&gt; 94596169877792
  94596169877792 --&gt; 94596167947440
  94596169877792 --&gt; 94596167948432
  94596169139824 --&gt; 94596167818336
  94596169139824 --&gt; 94596167820112
  94596167820112 --&gt; 94596167811264
  94596167820112 --&gt; 94596167813040
  94596169139824 --&gt; 94596167814816
  94596169139824 --&gt; 94596172077952
  94596169139824 --&gt; 94596172078944
  94596169139824 --&gt; 94596172103392
  94596169139824 --&gt; 94596172080720
  94596169139824 --&gt; 94596169835056
  94596169139824 --&gt; 94596167931232
  94596169139824 --&gt; 94596168301424
  94596168301424 --&gt; 94596172878736
  94596172878736 --&gt; 94596169840976
  94596172878736 --&gt; 94596169845568
  94596169139824 --&gt; 94596168453312
  94596169139824 --&gt; 94596168458416
  94596169139824 --&gt; 94596168455088
  94596169139824 --&gt; 94596167832096
  94596169139824 --&gt; 94596168413584
  94596169139824 --&gt; 94596169953056
  94596169139824 --&gt; 94596168404656</code></pre>

Example: MRO diagram

Jinja

{{ _mk.MkTable | MkClassDiagram(mode="mro") }}

Python

MkClassDiagram(klass=MkTable, mode='mro', direction='TD')
graph TD
  94596167947440["mktable.MkTable"]
  94596169877792["mkbasetable.MkBaseTable"]
  94596169139824["mkcontainer.MkContainer"]
  94596169136704["mknode.MkNode"]
  94596171773984["node.Node"]
  139930746687680["builtins.object"]
  94596167947440 --> 94596169877792
  94596169877792 --> 94596169139824
  94596169139824 --> 94596169136704
  94596169136704 --> 94596171773984
  94596171773984 --> 139930746687680
```` mermaid
graph TD
  94596167947440["mktable.MkTable"]
  94596169877792["mkbasetable.MkBaseTable"]
  94596169139824["mkcontainer.MkContainer"]
  94596169136704["mknode.MkNode"]
  94596171773984["node.Node"]
  139930746687680["builtins.object"]
  94596167947440 --> 94596169877792
  94596169877792 --> 94596169139824
  94596169139824 --> 94596169136704
  94596169136704 --> 94596171773984
  94596171773984 --> 139930746687680
````
<pre class="mermaid"><code>graph TD
  94596167947440["mktable.MkTable"]
  94596169877792["mkbasetable.MkBaseTable"]
  94596169139824["mkcontainer.MkContainer"]
  94596169136704["mknode.MkNode"]
  94596171773984["node.Node"]
  139930746687680["builtins.object"]
  94596167947440 --&gt; 94596169877792
  94596169877792 --&gt; 94596169139824
  94596169139824 --&gt; 94596169136704
  94596169136704 --&gt; 94596171773984
  94596171773984 --&gt; 139930746687680</code></pre>

Bases: MkDiagram

__init__

__init__(
    klass: type | str | Class,
    mode: DiagramModeStr = "baseclasses",
    direction: Literal["TD", "DT", "LR", "RL"] = "TD",
    max_depth: int | None = None,
    **kwargs: Any
)

Parameters:

Name Type Description Default
klass type | str | Class

Klass to show a diagram for

required
mode DiagramModeStr

What kind of diagram to display

'baseclasses'
direction Literal['TD', 'DT', 'LR', 'RL']

diagram direction

'TD'
max_depth int | None

Maxium depth to display

None
kwargs Any

Keyword arguments passed to parent

{}
Name Children Inherits
MkDiagram
mknodes.basenodes.mkdiagram
Class representing a mermaid diagram.
graph TD
  94596170373360["mkclassdiagram.MkClassDiagram"]
  94596169875232["mkdiagram.MkDiagram"]
  94596170179664["mkcode.MkCode"]
  94596169139824["mkcontainer.MkContainer"]
  94596169136704["mknode.MkNode"]
  94596171773984["node.Node"]
  139930746687680["builtins.object"]
  94596169875232 --> 94596170373360
  94596170179664 --> 94596169875232
  94596169139824 --> 94596170179664
  94596169136704 --> 94596169139824
  94596171773984 --> 94596169136704
  139930746687680 --> 94596171773984
/home/runner/work/mknodes/mknodes/mknodes/templatenodes/mkclassdiagram/metadata.toml
[metadata]
icon = "mdi:graph-outline"
name = "MkClassDiagram"
group = "diagram"

[[requirements.extension."pymdownx.superfences".custom_fences]]
name = "mermaid"
class = "mermaid"
format = "pymdownx.superfences.fence_code_format"

[examples.baseclass_diagram]
title = "Baseclass diagram"
jinja = """
{{ _mk.MkClassDiagram | MkClassDiagram(mode="baseclasses") }}
"""

[examples.subclass_diagram]
title = "Subclass diagram"
jinja = """
{{ _mk.MkContainer | MkClassDiagram(mode="subclasses", direction="LR") }}
"""

[examples.mro_diagram]
title = "MRO diagram"
jinja = """
{{ _mk.MkTable | MkClassDiagram(mode="mro") }}
"""

[output.markdown]
template = """
{{ node.fence_boundary }} mermaid
graph {{ node.direction }}
{% for identifier, title in node.builder.items | zip(node.builder.titles) %}
  {{ identifier }}["{{ title }}"]
{% endfor %}
{% for a, b in node.builder.connections %}
  {{ a }} --> {{ b }}
{% endfor %}
{{ node.fence_boundary }}
"""
mknodes.templatenodes.mkclassdiagram.MkClassDiagram
class MkClassDiagram(mkdiagram.MkDiagram):
    """Node to display the class hierarchy of a class. Supports multiple modes."""

    def __init__(
        self,
        klass: type | str | griffe.Class,
        mode: DiagramModeStr = "baseclasses",
        direction: Literal["TD", "DT", "LR", "RL"] = "TD",
        max_depth: int | None = None,
        **kwargs: Any,
    ):
        """Constructor.

        Args:
            klass: Klass to show a diagram for
            mode: What kind of diagram to display
            direction: diagram direction
            max_depth: Maxium depth to display
            kwargs: Keyword arguments passed to parent
        """
        self.klass = klass
        self.mode = mode
        self._max_depth = max_depth
        super().__init__(direction=direction, **kwargs)

    def __repr__(self):
        return reprhelpers.get_repr(
            self,
            klass=self.klass,
            mode=self.mode,
            direction=self.direction,
        )

    @property
    def builder(self):
        klass = classhelpers.to_class(self.klass)
        match self.mode:
            case "subclasses":
                return SubclassConnector(klass, max_depth=self._max_depth)
            case "baseclasses":
                return ParentClassConnector(klass, max_depth=self._max_depth)
            case "mro":
                return MroConnector(klass, max_depth=self._max_depth)
            case _:
                raise ValueError(self.mode)

    @property
    def mermaid_code(self) -> str:
        return self.builder.get_graph_connection_text()